<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <ul class="list">
        <li>01</li>
        <li>02</li>
        <li>03</li>
        <li>04</li>
        <li>05</li>
        <li>06</li>
        <li>07</li>
        <li>08</li>
        <li>09</li>
        <li>10</li>
    </ul>
</body>
<script>
    // 伪数组  
    // 有数组的结构和特性(length属性,下标取值和赋值(赋值看官方给的特性),可以被循环遍历:不建议使用for...in,出现多余属性),但是不能使用数组的方法

    // 常见伪数组
    // arguments   => 可以下标赋值
    // 获取的元素的集合  => 不可以下标赋值

    // 注意: 
    // 伪数组不建议使用for...in,出现多余属性
    // document.querySelectorAll() 获取的元素的集合存在forEach方法(自己本身的,不是数组的)

    // 伪数组转真数组
    // (1) 新建数组,遍历伪数组中的每个元素,将其放到新数组中(浅拷贝)
    // (2) 使用构造函数的方法 Array.from() 传入一个伪数组,返回转化后的新数组  (浅拷贝)

    var liList = document.getElementsByTagName("li");
    console.log(liList); // HTMLCollection => 元素的集合

    var liList = document.querySelectorAll(".list li");
    console.log(liList); // NodeList => 节点集合

    // (1) 新建数组,遍历伪数组中的每个元素,将其放到新数组中(浅拷贝)  => 手搓版
    // var list = [];
    // for(var i=0;i<liList.length;i++){
    //     var ele = liList[i];
    //     list.push(ele);
    // }
    // console.log(list,Array.isArray(list));

    // (2) 使用构造函数的方法 Array.from() 传入一个伪数组,返回转化后的新数组 
    var list = Array.from(liList);
    console.log(list,Array.isArray(list));

    list[0].innerText="hello world";
    


    // Array.from(liList).forEach(function(item,index){
    //     item.onclick = function(){
    //         console.log(item,index);
    //     }
    // })

    // var arr = Array.from(liList).map(function(item){
    //     return item.innerText;
    // })
    // console.log(arr);











</script>
</html>